home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / c64 / programming / Final Cartridge III software.sfx / combineddemo.asm (.txt) < prev    next >
Encoding:
Commodore BASIC  |  1994-08-11  |  7.4 KB  |  358 lines

  1. 1000 ; combineddemo  date: 10-03-88
  2. 1010 ;---------------------------------
  3. 1020 ;
  4. 1030 ; the final cartridge iii desktop
  5. 1040 ;
  6. 1050 ;     riska h&p, marc derksen
  7. 1060 ;
  8. 1070 ;     p r o j e c t   d e m o
  9. 1080 ;
  10. 1090 ;---------------------------------
  11. 1100 ;
  12. 1110 *=$0be1,$0801
  13. 1120 buf0=$a3
  14. 1130 buf1=$a4
  15. 1140 gosub=$de05  ; system constants
  16. 1150 close=$01
  17. 1160 toback=$02
  18. 1170 dragbr=$08
  19. 1180 invert=$01
  20. 1190 status=$02
  21. 1200 bordr=$04
  22. 1210 release=$10
  23. 1220 toggle=$20
  24. 1230 exclude=$40
  25. 1240 string=$80
  26. 1250 ;
  27. 1260 ;------ basic startup data -----
  28. 1270 wor $0817,1987  ; line number
  29. 1280 byt $9e  ; basic sys-code
  30. 1290 byt "2076 desk[164]p v1.0",0,0,0
  31. 1300 byt 1,0  ; version
  32. 1310 byt 4  ; size in blocks
  33. 1320 jmp $dfe8  ; startup
  34. 1330 byt 0  ; unused
  35. 1340 ;
  36. 1350 mn3=$c074
  37. 1360 mn3it1=$c0c2
  38. 1370 ;------ main ------------------
  39. 1380 start jsr survive
  40. 1390 ldx #<item1  ; set new menu
  41. 1400 ldy #>item1
  42. 1410 stx mn3+2
  43. 1420 sty mn3+3
  44. 1430 ldx #56+1  ; 7 menuitems
  45. 1440 ldy #64
  46. 1450 stx mn3+7
  47. 1460 sty mn3+8
  48. 1470 rts
  49. 1480 ;
  50. 1490 ;------ menuitem structure ---
  51. 1500 item1 wor item2  ; nextitem
  52. 1510 wor it1txt  ; item name
  53. 1520 wor openwd1  ; item exec
  54. 1530 byt 1,0
  55. 1540 item2 wor item3
  56. 1550 wor it2txt
  57. 1560 wor openwd2
  58. 1570 byt 1,0
  59. 1580 item3 wor item4
  60. 1590 wor it3txt
  61. 1600 wor openwd3
  62. 1610 byt 1,0
  63. 1620 item4 wor item5
  64. 1630 wor it4txt
  65. 1640 wor openwd4
  66. 1650 byt 1,0
  67. 1660 item5 wor item6
  68. 1670 wor it5txt
  69. 1680 wor openwd5
  70. 1690 byt 1,0
  71. 1700 item6 wor item7
  72. 1710 wor it6txt
  73. 1720 wor openwd6
  74. 1730 byt 1,0
  75. 1740 item7 wor 0
  76. 1750 wor it7txt
  77. 1760 wor unlink
  78. 1770 byt 1,0
  79. 1780 ;
  80. 1790 it1txt byt "[206][207][210][205][193][204][160][199][193][196]",0
  81. 1800 it2txt byt "[212][207][199][199][204][197] [199][193][196]",0
  82. 1810 it3txt byt "[211][212][210][201][206][199][160][199][193][196]",0
  83. 1820 it4txt byt "[197][216][195][204][213][196][197] [199][193][196]",0
  84. 1830 it5txt byt "[212][197][216][212] [211][193][205][208][204][197]",0
  85. 1840 it6txt byt "[201][205][193][199] [211][193][205][208][204][197]",0
  86. 1850 it7txt byt "[213][206][204][201][206][203]",0
  87. 1860 ;
  88. 1870 ;
  89. 1880 ggflags1=invert+bordr+release
  90. 1890 ;------ window ---------------
  91. 1900 openwd1 ldx #<window1  ; normal
  92. 1910 ldy #>window1
  93. 1920 lda #openwindow
  94. 1930 jmp gosub
  95. 1940 ;
  96. 1950 window1 wor gadget1  ; first gad
  97. 1960 byt 20,20  ; wdx,wdy
  98. 1970 byt 110,50  ; width,height
  99. 1980 wor wdtitle  ; window name
  100. 1990 byt close+toback+dragbr  ; wdflags
  101. 2000 byt 66  ; wdtitle size
  102. 2010 wor 0,0
  103. 2020 ;
  104. 2030 gadget1 wor 0  ; next gadget
  105. 2040 byt 34,25  ; ggx,ggy
  106. 2050 byt 40,12  ; width,height
  107. 2060 wor ggtext1  ; gadget text
  108. 2070 byt ggflags1 ; gadget flags
  109. 2080 wor 0,0,0  ; gadget exec
  110. 2090 ;
  111. 2100 wdtitle byt "[205]y [215]indow",0
  112. 2110 ggtext1 byt 5,2,1,"[199]adget",0
  113. 2120 ;
  114. 2130 ;
  115. 2140 ggflags2=invert+bordr+release+toggle
  116. 2150 ;------ window ---------------
  117. 2160 openwd2 ldx #<window2  ; toggle
  118. 2170 ldy #>window2
  119. 2180 lda #openwindow
  120. 2190 jmp gosub
  121. 2200 ;
  122. 2210 window2 wor gadget2  ; first
  123. 2220 byt 20,80  ; wdx,wdy
  124. 2230 byt 110,50  ; width,height
  125. 2240 wor wdtitle  ; window name
  126. 2250 byt close+toback+dragbr  ; wdflags
  127. 2260 byt 66  ; wdtitle size
  128. 2270 wor 0,0
  129. 2280 ;
  130. 2290 gadget2 wor 0  ; next gadget
  131. 2300 byt 19,25  ; ggx,ggy
  132. 2310 byt 70,12  ; width,height
  133. 2320 wor ggtext2  ; gadget text
  134. 2330 byt ggflags2  ; gadget flags
  135. 2340 wor 0,0,0  ; gadget exec
  136. 2350 ;
  137. 2360 ggtext2 byt 5,2,1  ; text struc
  138. 2370 byt "[212]oggle [199]adget",0
  139. 2380 ;
  140. 2390 ;
  141. 2400 ggflags3=bordr+string
  142. 2410 ;------ window ---------------
  143. 2420 openwd3 ldx #<window3  ; string
  144. 2430 ldy #>window3
  145. 2440 lda #openwindow
  146. 2450 jmp gosub
  147. 2460 ;
  148. 2470 window3 wor gadget3  ; first gad
  149. 2480 byt 20,140 ; wdx,wdy
  150. 2490 byt 110,50  ; width,height
  151. 2500 wor wdtitle  ; window name
  152. 2510 byt close+toback+dragbr  ; wdflags
  153. 2520 byt 66  ; wdtitle size
  154. 2530 wor 0,0
  155. 2540 ;
  156. 2550 gadget3 wor 0  ; next gadget
  157. 2560 byt 17,30  ; ggx,ggy
  158. 2570 byt 73,9  ; width,height
  159. 2580 wor ggtext3  ; gadget text
  160. 2590 byt ggflags3  ; gadget flags
  161. 2600 wor 0,0,0  ; gadget exec
  162. 2610 byt 0  ; user free
  163. 2620 byt 9  ; 9 characters
  164. 2630 wor strinp  ; input text
  165. 2640 ;
  166. 2650 ggtext3 byt 5,$f4,1  ; text struc
  167. 2660 byt "[211]tring [199]adget:",0
  168. 2670 strinp byt 2,1,1
  169. 2680 wor 0,0,0,0,0  ; 10 bytes input
  170. 2690 ;
  171. 2700 ;
  172. 2710 ggflags4=invert+bordr+toggle+exclude
  173. 2720 ;------ window ---------------
  174. 2730 openwd4 ldx #<window4  ; exclude
  175. 2740 ldy #>window4
  176. 2750 lda #openwindow
  177. 2760 jmp gosub
  178. 2770 ;
  179. 2780 window4 wor gadget41  ; first gad
  180. 2790 byt 165,20  ; wdx,wdy
  181. 2800 byt 110,50  ; width,height
  182. 2810 wor wdtitle  ; window name
  183. 2820 byt close+toback+dragbr  ; wdflags
  184. 2830 byt 66  ; wdtitle size
  185. 2840 wor 0,0
  186. 2850 ;
  187. 2860 gadget41 wor gadget42  ; next gad
  188. 2870 byt 18,30  ; ggx,ggy
  189. 2880 byt 22,13  ; width,height
  190. 2890 wor ggtext4  ; gadget text
  191. 2900 byt ggflags4  ; gadget flags
  192. 2910 wor 0,0,0  ; gadget exec
  193. 2920 byt 0  ; user free
  194. 2930 wor exclist  ; exclude list
  195. 2940 ;
  196. 2950 gadget42 wor gadget43  ; next
  197. 2960 byt 44,30  ; ggx,ggy
  198. 2970 byt 22,13  ; width,height
  199. 2980 wor 0  ; gadget text
  200. 2990 byt ggflags4  ; gadget flags
  201. 3000 wor 0,0,0  ; gadget exec
  202. 3010 byt 0  ; user free
  203. 3020 wor exclist  ; exclude list
  204. 3030 ;
  205. 3040 gadget43 wor 0  ; next gadget
  206. 3050 byt 70,30  ; ggx,ggy
  207. 3060 byt 22,13  ; width,height
  208. 3070 wor 0  ; gadget text
  209. 3080 byt ggflags4+status  ; gad flags
  210. 3090 wor 0,0,0  ; gadget exec
  211. 3100 byt 0  ; user free
  212. 3110 wor exclist  ; exclude list
  213. 3120 ;
  214. 3130 exclist wor gadget41  ; exclude
  215. 3140 wor gadget42
  216. 3150 wor gadget43
  217. 3160 wor 0
  218. 3170 ;
  219. 3180 ggtext4 byt 4,$f4,1  ; text struc
  220. 3190 byt "[205]utual [197]xclude",0
  221. 3200 ;
  222. 3210 ;
  223. 3220 ggflags5=invert+toggle+release
  224. 3230 ;------ window ---------------
  225. 3240 openwd5 ldx #<window5  ; ggtext
  226. 3250 ldy #>window5
  227. 3260 lda #openwindow
  228. 3270 jmp gosub
  229. 3280 ;
  230. 3290 window5 wor gadget5  ; first
  231. 3300 byt 150,77  ; wdx,wdy
  232. 3310 byt 140,55  ; width,height
  233. 3320 wor wdtitle  ; window name
  234. 3330 byt close+toback+dragbr  ; wdflags
  235. 3340 byt 66  ; wdtitle size
  236. 3350 wor 0,0
  237. 3360 ;
  238. 3370 gadget5 wor 0  ; next gadget
  239. 3380 byt 4,14  ; ggx,ggy
  240. 3390 byt 132,38  ; width,height
  241. 3400 wor 0  ; gadget text
  242. 3410 byt ggflags5  ; gadget flags
  243. 3420 wor ggspec  ; called when gadget
  244. 3430 wor 0,0  ; is being drawn
  245. 3440 ;
  246. 3450 ;------ gadget spec ----------
  247. 3460 ggspec ldx #<text  ; draw text
  248. 3470 ldy #>text
  249. 3480 lda #multiprint
  250. 3490 jmp gosub
  251. 3500 ;
  252. 3510 text ; multiple text structures
  253. 3520 byt 4,5,1,"normal",0
  254. 3530 byt 4,25,$81,"bold",0
  255. 3540 byt 58,5,$41
  256. 3550 byt "eexxtteennddeedd",0
  257. 3560 byt 58,18,$21,"double height",0
  258. 3570 byt 0  ; end of struc
  259. 3580 ;
  260. 3590 ;
  261. 3600 ggflags6=invert+release
  262. 3610 ;------ window ---------------
  263. 3620 openwd6 ldx #<window6  ; image
  264. 3630 ldy #>window6
  265. 3640 lda #openwindow
  266. 3650 jmp gosub
  267. 3660 ;
  268. 3670 window6 wor gadget6  ; first
  269. 3680 byt 165,140  ; wdx,wdy
  270. 3690 byt 110,50  ; width,height
  271. 3700 wor wdtitle  ; window name
  272. 3710 byt close+toback+dragbr  ; wdflags
  273. 3720 byt 66  ; wdtitle size
  274. 3730 wor 0,0
  275. 3740 ;
  276. 3750 gadget6 wor 0  ; next gadget
  277. 3760 byt 24,20  ; ggx,ggy
  278. 3770 byt 29,18  ; width,height
  279. 3780 wor ggtext6  ; gadget text
  280. 3790 byt ggflags6  ; gadget flags
  281. 3800 wor 0,0  ; gadget exec
  282. 3810 wor ggimage  ; gadget data image
  283. 3820 ;
  284. 3830 ggtext6 byt 37,10,1,"[201][205][193][199][197]",0
  285. 3840 ggimage byt 2,2,<imdat,>imdat
  286. 3850 ;
  287. 3860 imdat byt 26-1,15-1,7,4
  288. 3870 byt $e0,$f1,$ff,$c0,$a0,$91,0,$40
  289. 3880 byt $a0,$91,$7e,64,$a0,$91,$42,64
  290. 3890 byt $a0,$91,$42,64,$a0,$91,$42,64
  291. 3900 byt $bf,$91,$7e,$40,$80,$11,0,$40
  292. 3910 byt $9f,$d1,$3f,$c0,$90,$51,$20,0
  293. 3920 byt $90,$51,$20,$00,$90,$55,$20,0
  294. 3930 byt $90,$5f,$20,$00,$90,$55,$20,0
  295. 3940 byt $f0,$7f,$e0,$00
  296. 3950 ;
  297. 3960 ;------ unlink ---------------
  298. 3970 unlink ldx #<window1  ; close wd
  299. 3980 ldy #>window1
  300. 3990 jsr closewd
  301. 4000 ldx #<window2
  302. 4010 ldy #>window2
  303. 4020 jsr closewd
  304. 4030 ldx #<window3
  305. 4040 ldy #>window3
  306. 4050 jsr closewd
  307. 4060 ldx #<window4
  308. 4070 ldy #>window4
  309. 4080 jsr closewd
  310. 4090 ldx #<window5
  311. 4100 ldy #>window5
  312. 4110 jsr closewd
  313. 4120 ldx #<window6
  314. 4130 ldy #>window6
  315. 4140 jsr closewd
  316. 4150 ldx #<mn3it1  ; remove menu
  317. 4160 ldy #>mn3it1
  318. 4170 stx mn3+2
  319. 4180 sty mn3+3
  320. 4190 ldx #24+1  ; 3 items
  321. 4200 ldy #56
  322. 4210 stx mn3+7
  323. 4220 sty mn3+8
  324. 4230 inc $8004  ; remove survive
  325. 4240 rts
  326. 4250 ;
  327. 4260 ;------ close window ---------
  328. 4270 closewd stx buf0
  329. 4280 sty buf1
  330. 4290 lda #wdonscreen  ; if wd open
  331. 4300 jsr gosub
  332. 4310 iny
  333. 4320 beq not
  334. 4330 ldx buf0  ; then closewd
  335. 4340 ldy buf1
  336. 4350 lda #setcurwd
  337. 4360 jsr gosub
  338. 4370 lda #wdclose
  339. 4380 jsr gosub
  340. 4390 not rts
  341. 4400 ;
  342. 4410 ;------ reset survive --------
  343. 4420 survive ldx #6-1  ; install code
  344. 4430 slp lda tabel,x
  345. 4440 sta $8000,x
  346. 4450 dex
  347. 4460 bpl slp
  348. 4470 rts
  349. 4480 tabel wor start+3
  350. 4490 byt "mg87"
  351. 4500 ;
  352. 4510 ;------ includes -------------
  353. 4520 openwindow=48
  354. 4530 multiprint=69
  355. 4540 wdonscreen=70
  356. 4550 wdclose=65
  357. 4560 setcurwd=29
  358.